﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using Bamuca.Codigo.DTO;
using Bamuca.Codigo.BO;
using System.Data.SqlClient;
using System.Data;

namespace Bamuca
{
    public partial class CadastrarRotinas : System.Web.UI.Page
    {
        private RotinaDto _rotinaDto = new RotinaDto();
        private RotinaBo _rotinaBo = new RotinaBo();
        private AcaoDto _acaoDto = new AcaoDto();
        private AcaoBo _acaoBo = new AcaoBo();
        private ErroBo _erroBo = new ErroBo();

        protected void imgBtAdd_Click(object sender, ImageClickEventArgs e)
        {
            if (string.IsNullOrEmpty(Convert.ToString(Session["login"])))
            {
                Response.Redirect("Default.aspx");
            }

            pnAddRotina.Visible = true;
            panelLista.Visible = false;
            txtCodRotina.Text = string.Empty;
            tboxNomeRotina.Text = string.Empty;
        }

        protected void imgBtSalvarRotina_Click(object sender, ImageClickEventArgs e)
        {
            _rotinaDto.Nome = tboxNomeRotina.Text;
            if (txtCodRotina.Text != string.Empty)
            {
                _rotinaDto.IdRotina = Convert.ToInt32(txtCodRotina.Text);
            }
            _rotinaDto.Nome = tboxNomeRotina.Text;

            try
            {
                if(_rotinaDto.IdRotina > 0)
                {
                     _rotinaBo.Alterar(_rotinaDto);
                }
                else 
                {
                    _rotinaBo.Incluir(_rotinaDto);
                }

                //Bruno, a mensagem não está aparecendo na Label da masterpage.
                Label _erro = (Label)Master.FindControl("lblError");
                _erro.Text = "Rotina incluída com sucesso.";
                _erro.Visible = true;

                dropRotinas.DataBind();
                pnAddRotina.Visible = false;
                tboxNomeRotina.Text = string.Empty;
                panelLista.Visible = true;
            }
            catch (Exception ex)
            {
                // Bruno tem que ver porque o painel de alerta não sái.
                String script = "javascript:alert('" + _erroBo.TratarErro(ex)  + "');";
                ScriptManager.RegisterStartupScript(this, GetType(), "", script, true);
                
            }
        }

        public void CarregarGridAcoes(int _codigoRotina)
        {
            AcaoBo _acaoBo = new AcaoBo();
            AcaoDto _acaoDto = new AcaoDto();
            
            try
            {
                gridAcoes.DataSource = _acaoBo.ConsultarTodasPorRotina(Convert.ToInt32(dropRotinas.SelectedValue));
                gridAcoes.DataBind();
            }
            catch (Exception ex)
            {
                // Bruno tem que ver porque o painel de alerta não sái.
                String script = "javascript:alert('" + _erroBo.TratarErro(ex)  + "');";
                ScriptManager.RegisterStartupScript(this, GetType(), "", script, true);    
            }

        }

        protected void dropRotinas_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregarGridAcoes(Convert.ToInt32(dropRotinas.SelectedValue));
            
            if (gridAcoes.Rows.Count > 0)
            {
             imgBtSalvarAcoes.Visible = true;
            }
            else
            {
             imgBtSalvarAcoes.Visible= false;
            }
        }

        protected void gridAcoes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //Criar no objeto chekbox
                CheckBox ativo = (CheckBox)e.Row.FindControl("ckbAtivo");
                ativo.Checked = Convert.ToBoolean(e.Row.Cells[1].Text);
            }
        }

        protected void imgBtDelete_Click(object sender, ImageClickEventArgs e)
        {
            _rotinaDto.IdRotina = Convert.ToInt32(dropRotinas.SelectedValue);

            try
            {
                _rotinaBo.Excluir(_rotinaDto);

                //Bruno, a mensagem não está aparecendo na Label da masterpage.
                Label _erro = (Label)Master.FindControl("lblError");
                _erro.Text = "Rotina excluída com sucesso.";
                _erro.Visible = true;
            }
            catch (Exception ex)
            {
                // Bruno tem que ver porque o painel de alerta não sái.
                String script = "javascript:alert('" + _erroBo.TratarErro(ex) + "');";
                ScriptManager.RegisterStartupScript(this, GetType(), "", script, true);
            }

            dropRotinas.DataBind();
            gridAcoes.DataBind();
        }

        protected void imgBtSalvarAcoes_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                _acaoDto.IdRotina = Convert.ToInt32(dropRotinas.SelectedValue);
                _acaoBo.Excluir(_acaoDto);

                //Bruno, a mensagem não está aparecendo na Label da masterpage.
                Label _erro = (Label)Master.FindControl("lblError");
                _erro.Text = "Rotina salva com sucesso.";
                _erro.Visible = true;
            }
            catch (Exception ex)
            {
                // Bruno tem que ver porque o painel de alerta não sái.
                String script = "javascript:alert('" + _erroBo.TratarErro(ex) + "');";
                ScriptManager.RegisterStartupScript(this, GetType(), "", script, true);
            }

            foreach (GridViewRow grid in gridAcoes.Rows)
            {
                CheckBox ativo = (CheckBox)grid.Cells[0].FindControl("ckbAtivo");

                if (ativo.Checked)
                    try
                    {
                        _acaoDto.IdRotina = Convert.ToInt32(dropRotinas.SelectedValue);
                        _acaoDto.IdAcoes = Convert.ToInt32(grid.Cells[2].Text);
                        _acaoBo.Incluir(_acaoDto);

                        //Bruno, a mensagem não está aparecendo na Label da masterpage.
                        Label _erro = (Label)Master.FindControl("lblError");
                        _erro.Text = "Ações incluídas com sucesso.";
                        _erro.Visible = true;

                    }
                    catch (Exception ex)
                    {
                        // Bruno tem que ver porque o painel de alerta não sái.
                        String script = "javascript:alert('" + _erroBo.TratarErro(ex) + "');";
                        ScriptManager.RegisterStartupScript(this, GetType(), "", script, true);
                    }

            }

            dropRotinas.DataBind();
            gridAcoes.DataBind();
        }

        
        protected void imgBtRename_Click(object sender, ImageClickEventArgs e)
        {
            tboxNomeRotina.Text = dropRotinas.SelectedItem.ToString();
            txtCodRotina.Text = dropRotinas.SelectedValue;
        }

        protected void dropRotinas_Load(object sender, EventArgs e)
        {
            /*dropRotinas.SelectedIndex = 1;
            CarregarGridAcoes(Convert.ToInt32(dropRotinas.SelectedValue));

            if (gridAcoes.Rows.Count > 0)
            {
                imgBtSalvarAcoes.Visible = true;
            }
            else
            {
                imgBtSalvarAcoes.Visible = false;
            }*/
        }

        protected void imgbtn_cancelar_Click(object sender, ImageClickEventArgs e)
        {

        }
    }
}